﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using ERP_RORZE_DLL.Product.DAO;
using ERP_RORZE_DLL.Product.database;

namespace ERP_RORZE_PRODUCT.Product.WTS
{
    public partial class frm_MachineWTSEdit : DevExpress.XtraEditors.XtraForm
    {
        public event EventHandler Reload;
        ClsWTSDAO clsWTSDAO = new ClsWTSDAO();
        ClsMachineWTSTable b = new ClsMachineWTSTable();
        DataTable dt;
        public string ID;
        public string Date;
        public string Shift;
        public string MachineID;
        public string StaffID;
        public string MONo;
        public string OptionID;
        public string WorkID;
        public string Time;
        public string OKQty;
        public string NGQty;
        public string ProTime;
        public string ClampTime;
        public string Note1;
        public string Note2;

        public frm_MachineWTSEdit()
        {
            InitializeComponent();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frm_MachineWTSEdit_Load(object sender, EventArgs e)
        {
            //list machine
            DataTable dt3;
            dt3 = clsWTSDAO.GetAllMachine();
            DataRow r3 = dt3.NewRow();
            r3["MachineID"] = "";
            dt3.Rows.InsertAt(r3, 0);
            cbMachine.DataSource = dt3;
            cbMachine.DisplayMember = "MachineID";
            cbMachine.ValueMember = "MachineID";

            //list MO Number
            DataTable dt2;
            dt2 = clsWTSDAO.GetAllMONo();
            DataRow r1 = dt2.NewRow();
            r1["MONo"] = "";
            r1["PartID"] = "";
            r1["FullName"] = "";
            dt2.Rows.InsertAt(r1, 0);
            List<ClsMOTable> objs = new List<ClsMOTable>();

            foreach (DataRow r in dt2.Rows)
            {
                ClsMOTable obj = new ClsMOTable();
                obj.MONo = r["MONo"].ToString();     ////
                obj.PartID = r["PartID"].ToString();  ////
                obj.FullName = r["FullName"].ToString();
                objs.Add(obj);
            }
            cbMONo.DataSource = objs;
            cbMONo.DisplayMember = "FullName";
            cbMONo.ValueMember = "MONo";



            //list staff
            DataTable dt4;
            dt4 = clsWTSDAO.GetAllStaff();
            DataRow r4 = dt4.NewRow();
            r4["FullName"] = "";
            r4["StaffID"] = "";
            dt4.Rows.InsertAt(r4, 0);
            cbStaff.DataSource = dt4;
            cbStaff.DisplayMember = "FullName";
            cbStaff.ValueMember = "StaffID";

            //list work
            DataTable dt1 = new DataTable();
            dt1 = clsWTSDAO.GetAllWorkMWTS();
            DataRow r2 = dt1.NewRow();
            r2["WorkID"] = "";
            dt1.Rows.InsertAt(r2, 0);
            cbWorkID.DataSource = dt1;
            cbWorkID.DisplayMember = "WorkID";
            cbWorkID.ValueMember = "WorkID";

            txtClampTime.Text = ClampTime;
            txtNGQty.Text = NGQty;
            txtNote1.Text = Note1;
            txtNote2.Text = Note2;
            txtOKQty.Text = OKQty;
            txtProTime.Text = ProTime;
            cbShift.Text = Shift;
            txtTime.Text = Time;
            cbMachine.Text = MachineID;
            cbMONo.SelectedValue = MONo;
            cbOption.Text = OptionID;
            cbStaff.SelectedValue = StaffID;
            cbWorkID.SelectedValue = WorkID;
            dateDate.Value = DateTime.Parse(Date);
            
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            if (txtTime.Text == "")
            {
                MessageBox.Show("chưa nhập Time");
            }
            else if (cbShift.Text == "")
            {
                MessageBox.Show("chưa nhập Shift");
            }
            else
            {
                try
                {
                    if (txtClampTime.Text == "")
                    {
                        txtClampTime.Text = "0";
                    }

                    if (txtProTime.Text == "")
                    {
                        txtProTime.Text = "0";
                    }
                    float.Parse(txtClampTime.Text);
                    int.Parse(txtNGQty.Text);
                    int.Parse(txtOKQty.Text);
                    float.Parse(txtProTime.Text);
                    int.Parse(txtTime.Text);
                    dt = clsWTSDAO.GetAllOptionIDByMONo(cbMONo.SelectedValue.ToString(), cbOption.SelectedValue.ToString());
                    int i = 0;
                    foreach (DataRow r in dt.Rows)
                    {
                        i++;
                    }
                    if (i == 0)
                    {
                        MessageBox.Show("Nguyên công này không có dữ liệu trong MOOption");
                    }
                    else
                    {
                        int OK = 0;
                        int NG = 0;
                        // số lương OK và NG của nguyên công này  OK: 1, NG :2
                        dt = clsWTSDAO.GetAllVMachineOPTStatusByMONo(cbMONo.SelectedValue.ToString(), cbOption.Text);
                        foreach (DataRow r in dt.Rows)
                        {
                            OK = OK + int.Parse(r["MachineOKQty"].ToString());
                            NG = NG + int.Parse(r["MachineNGQty"].ToString());
                        }

                        int MachineNG = 0;
                        // so luong NG phat sinh ngoai may cho den thoi diem gia cong nguyen cong nay- Chi so 2+5
                        dt = clsWTSDAO.GetAllVMONGByMONo(cbMONo.SelectedValue.ToString());
                        foreach (DataRow r in dt.Rows)
                        {
                            MachineNG = MachineNG + int.Parse(r["SumofNG"].ToString());
                        }

                        int PreOptionOK = 0;
                        //'Tinh so luong san pham OK cua nguyen cong truoc do-chi so 4
                        dt = clsWTSDAO.GetAllVWTSCheckByMONo(cbMONo.SelectedValue.ToString(), cbOption.Text);
                        foreach (DataRow r in dt.Rows)
                        {
                            PreOptionOK = PreOptionOK + int.Parse(r["MachineOKQty"].ToString());
                        }

                        int intMoQty = 0;
                        //chỉ số 3
                        dt = clsWTSDAO.GetAllMOByMONo(cbMONo.SelectedValue.ToString());
                        foreach (DataRow r in dt.Rows)
                        {
                            intMoQty = intMoQty + int.Parse(r["MOQty"].ToString());
                        }
                        //if (NG + OK + int.Parse(txtOKQty.Text) + int.Parse(txtNGQty.Text) > PreOptionOK && cbOption.Text != "STG01" && int.Parse(txtNGQty.Text) + int.Parse(txtOKQty.Text) > 0)
                        //{
                        //    MessageBox.Show("Số lượng ok của nguyên công này là: " + OK + ", số lượng NG đã nhập của nguyên công này là: " + NG + ", NG trên form là: " + txtNGQty.Text + ", OK trên form là: " + txtOKQty.Text + ", Số lượng OK của nguyên công trước là: " + PreOptionOK);
                        //}
                        //else if (OK + MachineNG + int.Parse(txtOKQty.Text) + int.Parse(txtNGQty.Text) > intMoQty && int.Parse(txtNGQty.Text) + int.Parse(txtOKQty.Text) > 0)
                        //{
                        //    MessageBox.Show("Số lượng ok của nguyên công này là: " + OK + ", số lượng NG đến thời điểm này: " + MachineNG + ", NG trên form là: " + txtNGQty.Text + ", OK trên form là: " + txtOKQty.Text + ", Số lượng lệnh chỉ là: " + intMoQty);
                        //}
                        if (label13.Text.Substring(1, 3) == "Jig" && txtNote1.Text == "")
                        {
                            MessageBox.Show("Đây là lệnh gia công đồ gá. Pải nhập tên và số lượng đồ gá");
                        }
                        else if (label13.Text.Substring(1, 3) == "Jig" && cbWorkID.Text.Substring(1, 2) == "FB")
                        {
                            MessageBox.Show("Đây là lệnh gia công đồ gá. Mã công việc không được là FB##");
                        }
                        else if (label13.Text.Substring(1, 3) == "Jig" && cbWorkID.Text.Substring(1, 2) == "PL")
                        {
                            MessageBox.Show("Đây là lệnh gia công đồ gá. Mã công việc không được là PL##");
                        }
                        else if (label13.Text.Substring(1, 3) == "Jig" && cbWorkID.Text.Substring(1, 2) == "PM")
                        {
                            MessageBox.Show("Đây là lệnh gia công đồ gá. Mã công việc không được là PM##");
                        }
                        else if (cbMONo.SelectedValue.ToString().Substring(1, 1) == "S" && cbWorkID.Text.Substring(1, 2) == "PB")
                        {
                            MessageBox.Show("Đây là lệnh gia công hàng mẫu. Mã công việc không được là PB##");
                        }
                        else if (cbMONo.SelectedValue.ToString().Substring(1, 1) == "S" && cbWorkID.Text.Substring(1, 2) == "PL")
                        {
                            MessageBox.Show("Đây là lệnh gia công hàng mẫu. Mã công việc không được là PL##");
                        }
                        else if (cbMONo.SelectedValue.ToString().Substring(1, 1) == "S" && cbWorkID.Text.Substring(1, 2) == "PKJ")
                        {
                            MessageBox.Show("Đây là lệnh gia công hàng mẫu. Mã công việc không được là PKJ#");
                        }
                        //Kiem tra Neu la cong viec truc tiep thi khong duoc nhap vao lenh G
                        else if (checkMGT.Checked == false && cbMONo.SelectedValue.ToString().Substring(1, 1) == "G")
                        {
                            MessageBox.Show("Mã công việc trực tiếp không được nhập vào lệnh G");
                        }
                        //Kiem tra Neu la cong viec truc tiep thi khong duoc nhap vao lenh G
                        else if (checkMGT.Checked == true && cbMONo.SelectedValue.ToString().Substring(1, 1) == "G")
                        {
                            MessageBox.Show("Mã công việc gián tiếp phải nhập vào lệnh G");
                        }
                        else
                        {
                            if (OK + MachineNG + int.Parse(txtOKQty.Text) + int.Parse(txtNGQty.Text) == intMoQty)
                            {
                                ClsMOOptionTable bb = new ClsMOOptionTable();
                                bb.OptionID = cbOption.Text;
                                bb.MONo = cbMONo.SelectedValue.ToString();
                                bb.Finishdate = dateDate.Value;
                                bb.Shift = cbShift.Text;
                                bb.FinishMachine = cbMachine.Text;
                                clsWTSDAO.UpdateMOOption(bb);
                                MessageBox.Show("Đã update vào MOOption");
                            }

                            //MessageBox.Show("" + OK + "," + NG + "," + MachineNG + "," + PreOptionOK + "," + intMoQty);
                            //bắt đầu nhập
                            b.ID = int.Parse(ID);
                            b.Date = dateDate.Value;
                            b.ClampTime = float.Parse(txtClampTime.Text);
                            b.MachineID = cbMachine.Text;
                            b.MONo = cbMONo.SelectedValue.ToString();
                            b.NGQty = int.Parse(txtNGQty.Text);
                            b.Note1 = txtNote1.Text;
                            b.Note2 = txtNote2.Text;

                            b.OKQty = int.Parse(txtOKQty.Text);
                            b.OptionID = cbOption.Text;
                            b.ProTime = float.Parse(txtProTime.Text);
                            b.Shift = cbShift.Text;
                            b.StaffID = cbStaff.SelectedValue.ToString();
                            b.Time = float.Parse(txtTime.Text);
                            b.WorkID = cbWorkID.SelectedValue.ToString();
                            clsWTSDAO.UpdateMachineWTS(b);
                            MessageBox.Show("Đã nhập xong");

                            cbWorkID.Text = "";
                            txtClampTime.Text = "0";
                            txtNote1.Text = "";
                            txtNGQty.Text = "0";
                            txtNote2.Text = "";
                            txtOKQty.Text = "0";
                            txtProTime.Text = "0";
                            txtTime.Text = "";

                            Reload(sender, e);

                        }
                    }
                }
                catch
                {
                    MessageBox.Show("ClampTime, NGQty, OKQty, ProTime, Time phải là kiểu số");
                }
            //if (txtTime.Text == "")
            //{
            //    MessageBox.Show("chưa nhập Time");
            //}
            //else
            //{
            //    try
            //    {
            //        //int.Parse(txtClampTime.Text);
            //        int.Parse(txtNGQty.Text);
            //        int.Parse(txtOKQty.Text);
            //        //int.Parse(txtProTime.Text);
            //        int.Parse(txtTime.Text);

            //        //bắt đầu nhập
            //        b.ID = int.Parse(ID);
            //        b.Date = dateDate.Value;
            //        if (txtClampTime.Text == "")
            //        {
            //            b.ClampTime = 0;
            //        }
            //        b.ClampTime = float.Parse(txtClampTime.Text);
            //        b.MachineID = cbMachine.Text;
            //        b.MONo = cbMONo.Text;
            //        b.NGQty = int.Parse(txtNGQty.Text);
            //        b.Note1 = txtNote1.Text;
            //        b.Note2 = txtNote2.Text;
                    
            //        b.OKQty = int.Parse(txtOKQty.Text);
            //        b.OptionID = cbOption.Text;
            //        if (txtProTime.Text == "")
            //        {
            //            b.ClampTime = 0;
            //        }
            //        b.ProTime = float.Parse(txtProTime.Text);
            //        b.Shift = cbShift.Text;
            //        b.StaffID = cbStaff.SelectedValue.ToString();
            //        b.Time = float.Parse(txtTime.Text);
            //        b.WorkID = cbWorkID.SelectedValue.ToString();
            //        clsWTSDAO.UpdateMachineWTS(b);
            //        MessageBox.Show("Đã nhập xong");
            //        Reload(sender, e);
            //    }
            //    catch
            //    {
            //        MessageBox.Show("ClampTime, NGQty, OKQty, ProTime, Time phải là kiểu số");
            //    }
            }
           
        }

        private void cbMONo_SelectedValueChanged(object sender, EventArgs e)
        {
            //list  OptionID
            dt = clsWTSDAO.GetAllOptionID(cbMONo.SelectedValue.ToString());
            cbOption.DataSource = dt;
            cbOption.DisplayMember = "OptionID";
            cbOption.ValueMember = "OptionID";

            ClsMOTable obj = ((ClsMOTable)cbMONo.SelectedItem);
            label13.Text = obj.PartID.ToString();
        }
        
    }
}